home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib07.dsk / DOS COMMAND CHANGER.bas < prev    next >
BASIC Source File  |  2023-02-26  |  4KB  |  110 lines

  1. 1  REM  **************************
  2. 2  REM  *  DOS COMMAND CHANGER   *
  3. 3  REM  *   (DOS 3.2 / 3.3)      *
  4. 4  REM  *   BY PATRICK CLYNE     *
  5. 5  REM  *  COPYRIGHT (C) 1981    *
  6. 6  REM  *  BY MICRO-SPARC INC    *
  7. 7  REM  **************************
  8. 10  PRINT ""
  9. 100  DIM N$(28),X(200),S$(28),NC$(28)
  10. 110  TEXT : HOME : SPEED= 255
  11. 115  REM  LINES 120-124 FIND THE DOS VERSION AND SET THE DS PARAMETER
  12. 116  REM  3.3 --> DS=7
  13. 117  REM  3.2 --> DS=8
  14. 120 Q =  PEEK(978):Q1 = (Q +34) *256 +214:Q2 = (Q +9) *256 +179:DS = 0
  15. 122  IF   NOT  PEEK(Q2)  AND ( PEEK(Q1) = 240  OR  PEEK(Q1) = 96)  THEN DS = 8
  16. 124  IF  PEEK(Q2) = 3  THEN DS = 7
  17. 128 KT = 1:Y = 1:BY = 132: IF DS = 0  THEN  PRINT "I CANNOT WORK WITH THIS DOS.": PRINT "THE DOS LOADED IS NOT 3.2 OR 3.3.": END 
  18. 130  FOR I = 1 TO 28: READ S$(I): NEXT 
  19. 140 T$ = S$(22):S$(22) = S$(8):S$(8) = T$
  20. 500  IF  PEEK(987) <120  THEN IOB =  PEEK(987) *256 +232
  21. 510  IF  PEEK(987) >120  THEN IOB = ( PEEK(987) -128) *256 +231 -32767
  22. 520  POKE 1001,76: POKE 1002,181: POKE 1003, PEEK(987):RWTS = 995
  23. 530 TRK = IOB +4:SEC = IOB +5:AHIGH = IOB +9:ALOW = IOB +8:COM = IOB +12:VOL = IOB +3:ERR = IOB +13
  24. 540  POKE TRK,KT
  25. 550  POKE SEC,DS
  26. 560  POKE VOL,0
  27. 570  POKE COM,1
  28. 580  POKE AHIGH,179
  29. 590  POKE ALOW,187
  30. 600  POKE ERR,0
  31. 610  PRINT "INSERT DISK AND PRESS ANY KEY ";: GET U$
  32. 620  CALL RWTS
  33. 630 LOC = (179 *256) +187
  34. 640 KP = LOC +BY
  35. 650 NLOC = LOC +256
  36. 660  POKE AHIGH, INT(NLOC/256)
  37. 670  POKE ALOW,NLOC -256 * INT(NLOC/256)
  38. 680  POKE SEC,DS +1: CALL RWTS
  39. 1000 ST = LOC +BY
  40. 1010  FOR K = 1 TO 28
  41. 1020  PRINT ".";
  42. 1030 X =  PEEK(ST)
  43. 1050  IF X >96  AND X <192  THEN X = X -64
  44. 1060  IF X >192  THEN X = X -128:FL = 9
  45. 1070 C$ =  CHR$(X)
  46. 1080 IN$ = IN$ +C$
  47. 1090  IF X = 35  OR X = 99  THEN FL = 9
  48. 1100  IF FL = 9  THEN FL = 0: GOTO 1120
  49. 1110 ST = ST +1: GOTO 1030
  50. 1120 N$(K) = IN$:IN$ = ""
  51. 1130 ST = ST +1
  52. 1140  NEXT K
  53. 1150 T$ = N$(22):N$(22) = N$(8):N$(8) = T$
  54. 2000  HOME : PRINT  TAB( 15)"COMMAND CHANGER"
  55. 2005  IF DS = 8  THEN  VTAB 16: HTAB 16: PRINT "2";: HTAB 1
  56. 2010  VTAB 3: PRINT "   CURR"; SPC( 5);"STD"; SPC( 09);"CURR"; SPC( 4);"STD"
  57. 2020  FOR I = 1 TO 40: PRINT  CHR$(45);: NEXT 
  58. 2030  VTAB 5
  59. 2040  FOR I = 1 TO 14
  60. 2050  HTAB 1: PRINT I;: HTAB 4: PRINT N$(I);: HTAB 13: PRINT S$(I);: HTAB 22: PRINT I +14;: HTAB 25: PRINT N$(I +14);: HTAB 33: PRINT S$(I +14)
  61. 2060  NEXT 
  62. 2070 T$ = N$(22):N$(22) = N$(8):N$(8) = T$
  63. 2080  VTAB 20: HTAB 1: CALL  -958: INPUT "ENTER SELECTION NUMBER -> ";S$:S =  VAL(S$): IF S <0  OR S >28  THEN 2080
  64. 2085  IF S = 8  OR S = 22  THEN G = 9
  65. 2090  IF S = 0  THEN 20000
  66. 2100  IF S >14  THEN 2140
  67. 2110  VTAB 4 +S: HTAB 1: FLASH : PRINT S: NORMAL 
  68. 2120 U = 9
  69. 2130  GOTO 2150
  70. 2140  VTAB 4 +S -14: HTAB 22: FLASH : PRINT S: NORMAL 
  71. 2150  VTAB 20: HTAB 1: CALL  -958: INPUT "ENTER NEW COMMAND -> ";NC$: IF NC$ = ""  THEN 2150
  72. 2160  IF U = 9  THEN U = 0: VTAB 4 +S: HTAB 1: INVERSE : PRINT S: NORMAL : GOTO 2180
  73. 2170  VTAB 4 +S -14: HTAB 22: INVERSE : PRINT S: NORMAL 
  74. 2180 NC$(S) = NC$
  75. 2190  GOSUB 50000
  76. 2200  GOTO 2080
  77. 20000 Y = 0: VTAB 21: PRINT "COMPUTING"
  78. 20001  FOR I = 1 TO 28
  79. 20002  IF G = 9  THEN G = 0:T$ = NC$(22):NC$(22) = NC$(8):NC$(8) = T$
  80. 20010  IF NC$(I) = ""  THEN 20060
  81. 20015 N$(I) = NC$(I)
  82. 20060  NEXT 
  83. 20070  FOR I = 1 TO 28
  84. 20080 K =  LEN(N$(I))
  85. 20090  FOR J = 1 TO K -1
  86. 20100 Y = Y +1:X(Y) =  ASC( MID$ (N$(I),J,1))
  87. 20110  NEXT J
  88. 20120 Y = Y +1:P =  ASC( RIGHT$(N$(I),1)) +128
  89. 20121  IF P = 227  THEN P = 163
  90. 20125 X(Y) = P
  91. 20130  NEXT I
  92. 20140  FOR ZZ = 1 TO Y: POKE KP +ZZ -1,X(ZZ): NEXT 
  93. 20150  POKE AHIGH,179
  94. 20160  POKE ALOW,187
  95. 20165  POKE COM,2
  96. 20166  POKE SEC,DS
  97. 20170  CALL RWTS
  98. 20180  POKE AHIGH, INT(NLOC/256)
  99. 20190  POKE ALOW,NLOC -256 * INT(NLOC/256)
  100. 20198  POKE SEC,DS +1
  101. 20200  CALL RWTS
  102. 20300  VTAB 21: HTAB 1: CALL  -958: PRINT "DONE"
  103. 20400  VTAB 22: HTAB 1: CALL  -958: PRINT "MORE (Y/N)? ";: GET YN$: IF YN$ = "Y"  THEN  RUN 
  104. 20405  IF YN$ = "N"  THEN  END 
  105. 20406  GOTO 20400
  106. 50000  IF S >14  THEN 50050
  107. 50010  VTAB 4 +S: HTAB 4: PRINT "        ": VTAB 4 +S: HTAB 4: PRINT NC$: GOTO 50090
  108. 50050  VTAB 4 +S -14: HTAB 25: PRINT "        ": VTAB 4 +S -14: HTAB 25: PRINT NC$
  109. 50090  RETURN 
  110. 60000  DATA  INIT,LOAD,SAVE,RUN,CHAIN,DELETE,LOCK,UNLOCK,CLOSE,READ,EXEC,WRITE,POSITION,OPEN,APPEND,RENAME,CATALOG,MON,NOMON,PR#,IN#,MAXFILES,FP,INT,BSAVE,BLOAD,BRUN,VERIFY